package com.ash.test.json;

import lombok.Data;

import java.io.Serializable;
import java.math.BigInteger;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>Description 基础组织实体</p>
 *
 * @author by linweipei
 * @since 2020/7/27 15:38
 */
@Data
public class BaseOrganizationDTO implements IPathNode, Serializable {
    private static final long serialVersionUID = 8493171230562568432L;

    /**
     * 自增主键
     */
    private BigInteger id;
    /**
     * 组织编码
     */

    private String organizationCode;
    /**
     * 全路径
     */

    private String organizationPath;
    /**
     * 机构名称模糊匹配
     */

    private String organizationNameLike;
    /**
     * 员工姓名模糊匹配
     */

    private String employeeNameLike;
    /**
     * 全路径
     */

    private List<String> organizationPaths;
    /**
     * 上级全路径
     */

    private String parentOrganizationPath;
    /**
     * 新的上级路径
     */

    private String newParentOrganizationPath;
    /**
     * 新上级机构编码
     */

    private String newParentOrganizationCode;
    /**
     * 新上级机构名称
     */

    private String newParentOrganizationName;
    /**
     * 旧的上级路径
     */

    private String oldParentOrganizationPath;
    /**
     * 旧上级机构编码
     */

    private String oldParentOrganizationCode;
    /**
     * 旧上级机构名称
     */

    private String oldParentOrganizationName;
    /**
     * 上级组织编码
     */

    private String parentOrganizationCode;
    /**
     * 上级组织名称
     */

    private String parentOrganizationName;
    /**
     * 上级组织审批状态
     */

    private Integer parentAuditStatus;
    /**
     * 类型
     */

    private Integer type;
    /**
     * 路径模糊查询
     */

    private String organizationPathLike;
    private BigInteger organizationRelationId;

    /**
     * 是否展示数量
     */

    private Integer showNumberFlag;
    /**
     * 是否统计员工个数
     */

    private Integer countEmployeeNumFlag;
    /**
     * 是否有组织操作权限(1:有，0：没有)
     */

    private Integer organizationPermissions;


    private Integer showGroupInfoFlag;
    /**
     * 审核状态 1,通过, 0,未通过
     */

    private Integer auditStatus;

    private Integer versionStatus;


    private Integer operateType;


    private LocalDate effectiveDate;


    private Boolean isNeedDelete;

    private String titleValue;

    private String titleName;
    /**
     * 简称
     */

    private String organizationShortName;
    /**
     * 英文简称
     */

    private String organizationShortNameEnglish;

    private Integer addSuperiorOrganizationType;

    private String childOrganizationCode;

    private Integer childOrganizationMoveFlag;

    private String eventId;

    /**
     * 子孙节点
     */
//    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    protected List children;

    private String filterAdministrativeOrganizationCode;

    private Boolean filterAdministrativeOrganizationIncludeChildren;

    private String fullOrganizationName;

    private String fullOrganizationCode;

    private String fullOrganizationPath;

    private Boolean fullNameNeedGroup;

    private String onlyDirectChildrenByThisOrgCode;

    private String tenantCode;
    private List<FullOrganizationPathInfo> fullOrganizationPathInfo;


    public interface IUpdatePathGroup {
    }

    public interface IFunctionalListOneChildGroup {
    }

    @lombok.Getter
    @lombok.Setter
    @lombok.AllArgsConstructor
    public static class FullOrganizationPathInfo {
        private String organizationCode;
        private String organizationName;
        private String organizationPath;

    }
}
